"""
注意：
    当页面发生变动时，需要重新获取 ActionChains 对象，否则将会报错
        这个错误信息表示你试图操作的元素在你找到它之后已经变得过时（stale），通常是因为页面已经发生了变化，例如 DOM 已经被重建或者页面已经重新加载。

"""
# 导包
from time import sleep

from selenium import webdriver
from selenium.webdriver import ActionChains

# 获取浏览器驱动对象
driver = webdriver.Chrome()

# 打开url
driver.get("https://demo.ruoyi.vip/login")

# 实例化并获取 ActionChains类
action = ActionChains(driver)

# 定位用户名 在用户名上右击鼠标 预期：粘贴
# 获取用户名元素
username = driver.find_element_by_css_selector('[name="username"]')
# 调用右击方法
action.context_click(username).perform()
sleep(2)

# 发送用户名 admin 并进行双击 预期：选中admin
# username.send_keys("admin")
action.double_click(username).perform()
sleep(2)

# 移动到注册按钮上 预期：按钮变色 出现 加入会员A
action.move_to_element(driver.find_element_by_css_selector("#btnSubmit")).perform()

# 扩展：移动到头像查看，展示功能选项，注意，需要输入密码进入若依首页
sleep(5)
ActionChains(driver).move_to_element(driver.find_element_by_css_selector('.dropdown.user-menu')).perform()


# 暂停3秒
sleep(2)

# 关闭浏览器驱动对象
driver.close()
